package org.frankkie.parcdroidprj;

import android.graphics.Color;
import com.google.android.maps.GeoPoint;
import java.util.ArrayList;

/**
 *
 * @author frankkie
 */
public class OverlayPunt implements Comparable<OverlayPunt> {

  public GeoPoint geoPoint;
  public String titel = "";
  public String beschrijving = "";
  public int kleur = Color.BLACK;
  public static final int standaardGrootte = 2;
  public int grootte = standaardGrootte;
  public int volgnummer = -1;

  //////VAN DIJKSTRA
  //public OverlayLijn[] adjacencies;
  //adjacencies: lijnen die verbonden zijn met dit punt.
  public ArrayList<OverlayLijn> adjacencies = new ArrayList<OverlayLijn>();
  public double minDistance = Double.POSITIVE_INFINITY;
  public OverlayPunt previous;

  public void resetDijkstra(){
    adjacencies = new ArrayList<OverlayLijn>();
    minDistance = Double.POSITIVE_INFINITY;
    previous = null;
  }

  public int compareTo(OverlayPunt other) {
    return Double.compare(minDistance, other.minDistance);
  }

  @Override
  public boolean equals(Object o){
    if (o instanceof OverlayPunt){
      if (this.hashCode() == o.hashCode()){
        return true;
      }
    }
    return false;
  }

  @Override
  public int hashCode() {
    int hash = 7;
    hash = 89 * hash + (this.geoPoint != null ? this.geoPoint.hashCode() : 0);
    hash = 89 * hash + (this.titel != null ? this.titel.hashCode() : 0);
    hash = 89 * hash + (this.beschrijving != null ? this.beschrijving.hashCode() : 0);
    hash = 89 * hash + this.volgnummer;
    return hash;
  }

  public void addLijnToAdjacencies(OverlayLijn lijn){
    adjacencies.add(lijn);
  }
  ///EINDE DIJKSTRA

  @Deprecated
  public OverlayPunt(double a, double b) {
    //MAG NIET MEER WORDEN GEBRUIKT !
    //VANAF NU MOET EEN OverlayPunt EEN VOLGNUMMER HEBBEN !
    //USE
    //OverlayPunt(double a, double b, int nummer)
    //INSTEAD
    this.geoPoint = OverlayDing.getPoint(a, b);
  }

  @Override
  public String toString() {
    return "punt: " + titel + "," + beschrijving + " nr=" + volgnummer + " geo=" + geoPoint.getLatitudeE6() + "," + geoPoint.getLongitudeE6();
  }

  public OverlayPunt(double a, double b, int nummer) {
    this.geoPoint = OverlayDing.getPoint(a, b);
    this.volgnummer = nummer;
  }

  public OverlayPunt(double a, double b, int nummer, String titel, String beschrijving) {
    this.geoPoint = OverlayDing.getPoint(a, b);
    this.volgnummer = nummer;
    this.titel = titel;
    this.beschrijving = beschrijving;
  }

  /**
   * @return the geoPoint
   */
  public GeoPoint getGeoPoint() {
    return geoPoint;
  }

  /**
   * @param geoPoint the geoPoint to set
   */
  public void setGeoPoint(GeoPoint geoPoint) {
    this.geoPoint = geoPoint;
  }

  /**
   * @return the titel
   */
  public String getTitel() {
    return titel;
  }

  /**
   * @param titel the titel to set
   */
  public void setTitel(String titel) {
    this.titel = titel;
  }

  /**
   * @return the beschrijving
   */
  public String getBeschrijving() {
    return beschrijving;
  }

  /**
   * @param beschrijving the beschrijving to set
   */
  public void setBeschrijving(String beschrijving) {
    this.beschrijving = beschrijving;
  }

  /**
   * @return the kleur
   */
  public int getKleur() {
    return kleur;
  }

  /**
   * @param kleur the kleur to set
   */
  public void setKleur(int kleur) {
    this.kleur = kleur;
  }

  /**
   * @return the grootte
   */
  public int getGrootte() {
    return grootte;
  }

  /**
   * @param grootte the grootte to set
   */
  public void setGrootte(int grootte) {
    this.grootte = grootte;
  }

  /**
   * @return the volgnummer
   */
  public int getVolgnummer() {
    return volgnummer;
  }

  /**
   * @param volgnummer the volgnummer to set
   */
  public void setVolgnummer(int volgnummer) {
    this.volgnummer = volgnummer;
  }
}


/**
 *
 * package dijkstra;

public class Vertex implements Comparable<Vertex>
{
    public final String name;
    public Edge[] adjacencies;
    public double minDistance = Double.POSITIVE_INFINITY;
    public Vertex previous;
    public Vertex(String argName) { name = argName; }
  @Override
    public String toString() { return name; }
    public int compareTo(Vertex other)
    {
        return Double.compare(minDistance, other.minDistance);
    }

}
 *
 */
